home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.mactech.com 2010
/
ftp.mactech.com.tar
/
ftp.mactech.com
/
machack
/
Hacks96
/
RoasterJavaWAHTTPCGI.sit
/
Roaster-Java-WA-HTTP-CGI hack
/
JavaWebStuff
/
JavaRuntime.c
< prev
next >
Wrap
Text File
|
1996-06-22
|
4KB
|
165 lines
/*************************************************************************************
*************************************************************************************/
#include "JavaRuntime.h"
#include "Messages.h"
#include <string.h>
static JavaRuntime sRuntime = nil;
extern long gRunning;
/*************************************************************************************
*************************************************************************************/
JavaStatus
RoasterIDE_registerNativeMethods(JavaRuntime runtime);
/*************************************************************************************
*************************************************************************************/
static JavaStatus
wacgi_Done(JavaEnv env)
{
JavaRef this = JavaEnv_popRef(env);
gRunning = 0;
return JavaStatusOk;
}
static JavaStatus
wacgi_SendRequest(JavaEnv env)
{
JavaRef this = JavaEnv_popRef(env);
JavaRef requestString = JavaEnv_popRef(env);
JavaStatus js;
size_t len;
JavaChar *unichars;
char *s;
int i;
js = JavaString_length(env, requestString, &len);
unichars = (JavaChar *) NewPtr(len * 2);
if (unichars)
{
js = JavaString_getChars(env, requestString, 0, -1, unichars);
s = (char *) unichars;
for (i = 0; i < len; i++)
{
s[i] = unichars[i];
s[i+1] = 0;
}
printf("Sending request [%s]\n", s);
MsgToQ(CGIQ, s, len+1);
DisposePtr((Ptr) unichars);
}
return JavaStatusOk;
}
static JavaStatus
wacgi_GetResponse(JavaEnv env)
{
JavaRef this = JavaEnv_popRef(env);
JavaRef theString;
char *response;
response = MsgFromQ(CGIQ);
if (response)
{
JavaString_makeUTF(env, &theString, response, strlen(response));
JavaEnv_pushRef(env, theString);
DisposePtr(response);
}
else
{
JavaEnv_pushRef(env, JavaNull);
}
return JavaStatusOk;
}
static JavaStatus
java_lang_Runtime_exitInternal_stub(JavaEnv env)
{
JavaInt exitCode = JavaEnv_popInt(env);
JavaRef this = JavaEnv_popRef(env);
return JavaStatusOk;
}
/*************************************************************************************
*************************************************************************************/
JavaStatus
RoasterIDE_registerNativeMethods(JavaRuntime runtime)
{
JavaStatus err;
JavaNativeTable methodTable[] = {
{ "java/lang/Runtime", "exitInternal", "(I)V",
java_lang_Runtime_exitInternal_stub, NULL, JavaAccessMember },
{"wa/http/WACGI", "SendRequest", "(Ljava/lang/String;)V",
wacgi_SendRequest, NULL, JavaAccessMember},
{"wa/http/WACGI", "GetResponse", "()Ljava/lang/String;",
wacgi_GetResponse, NULL, JavaAccessMember},
{"wa/http/WACGI", "Done", "()V",
wacgi_Done, NULL, JavaAccessMember},
{ NULL }
};
err = JavaRuntime_registerNativeMethodTable(runtime, methodTable);
return err;
}
/*************************************************************************************
*************************************************************************************/
OSErr InitalizeJavaRuntime(void)
{
JavaRuntimeInitargs initArgs;
JavaStatus err;
JavaRuntime_makeDefaultInitArgs(&initArgs);
err = JavaRuntime_make(&initArgs, &sRuntime);
if (err != JavaStatusOk)
{
//should we do something else?
return err;
}
err = RoasterIDE_registerNativeMethods(sRuntime);
return noErr;
}
/*************************************************************************************
*************************************************************************************/
JavaRuntime GetJavaRuntime(void)
{
if(sRuntime == nil) {
InitalizeJavaRuntime();
}
return sRuntime;
}
/*************************************************************************************
*************************************************************************************/
void DisposeJavaRuntime(void)
{
if(sRuntime) {
JavaRuntime_dispose(sRuntime);
}
sRuntime = nil;
}